#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include "cJSON.h"
#include <stdlib.h>
#include <string.h>

// 表示消息队列的基本信息
struct msgbuf
{
    long mtype;
    char mtext[1024];
};

int main()
{
    // 创建消息队列
    int msgid;
    msgid = msgget(0x001, IPC_CREAT|0666);
    if (msgid < 0)
    {
        perror("msgget");
        return -1;
    }
    printf("消息队列获取成功\n");

    // 创建JSON对象
    cJSON *root = cJSON_CreateObject();
    cJSON_AddNumberToObject(root, "led_1", 1);
    cJSON_AddNumberToObject(root, "led_2", 1);
    cJSON_AddNumberToObject(root, "buz", 1);
    // 将JSON对象转换为字符串
    char *json_str = cJSON_Print(root);
    printf("生成的JSON字符串: %s\n", json_str);

    // 发送消息到消息队列
    struct msgbuf msg;
    msg.mtype = 1;  // 消息类型
    strncpy(msg.mtext, json_str, sizeof(msg.mtext));

    int ret = msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0);
    if (ret < 0)
    {
        perror("msgsnd");
        return -1;
    }
    printf("消息发送成功\n");

    // 释放资源
    cJSON_Delete(root);
    free(json_str);

    return 0;
}

